import { thenFs } from './index.js'
// JSON 数据库
const MerchantAccount = './data/Merchant_Account/index.json'

//获取
export async function getMerchantAccount() {
  try {
    // 利用 thenFs 读取数据库文件内容
    const str = await thenFs.readFile(MerchantAccount, 'utf-8') // 返回的是Promise
    // 把str转换为数组
    const arr = JSON.parse(str)
    // console.log(arr)
    // 返回数组, 将来别人调用这个函数，就可以获取数组了
    return arr
  } catch (e) {
    return '获取失败'
  }
}

//添加
export async function AddMerchantAccount(obj) {
  // 先读取数据库内所有数据
  const arr = await getMerchantAccount()
  //意思是：当newObj对象内 和 用户添加相等时
  //场景: 数据库添加数据
  const newObj = {}
  for (const key in obj) {
    console.log(key)
    if (key !== 'id') {
      newObj[key] = obj[key]
    }
  }
  //添加ID到数据库
  newObj.id = arr[arr.length - 1].id * 1 + 1
  // 然后向数组中添加元素
  //   obj.id = arr[arr.length - 1].id * 1 + 1;
  arr.push(newObj)
  // 写入数据
  try {
    // 代码 thenFs.writeFile()之前最好写await，有阻塞功能;
    await thenFs.writeFile(MerchantAccount, JSON.stringify(arr))

    return '添加成功'
  } catch (e) {
    return '添加失败'
  }
}

//删除
export async function delMerchantAccount(id) {
  // 先读取数据库中的数据
  const arr = await getMerchantAccount()
  // 过滤模拟删除功能
  const newArr = arr.filter(item => item.id != id)

  // 写入文件
  try {
    // 代码 thenFs.writeFile()之前最好写await，有阻塞功能;
    await thenFs.writeFile(MerchantAccount, JSON.stringify(newArr))
    return '删除成功'
  } catch (e) {
    return '删除失败'
  }
}

//修改
export async function PutMerchantAccount(obj) {
  // 先读取文件中的数据
  const arr = await getMerchantAccount()
  // 修改 - 先删除，在添加
  const index = arr.findIndex(item => item.id == obj.id)
  arr.splice(index, 1, obj)
  // 写入数据
  try {
    // 代码 thenFs.writeFile()之前最好写await，有阻塞功能;
    await thenFs.writeFile(MerchantAccount, JSON.stringify(arr))
    return '修改成功'
  } catch (e) {
    return '修改失败'
  }
}

export default {
  getMerchantAccount,
  AddMerchantAccount,
  delMerchantAccount,
  PutMerchantAccount
}
